package _220330;

import java.util.HashSet;
import java.util.Set;

/**
 * @author ShadowLim
 * @create 2022-03-30-11:14
 */
public class 寻找三位数 {
    /**
     * 1 ~ 9 的 9 个数字组成 3 个3位数（1~9每个数字只出现在三个三位数中一次）
     * 则第一个三位数不用从123开始遍历 最大可以遍历到329
     * @param args
     */
    public static void main(String[] args) {
        for (int i = 123; i <= 329; i++) {
            int j = 2 * i, k = 3 * i;
            if (check(i, j, k)) {
                System.out.println(i + " " + j + " " + k);
            }
        }
    }

    private static boolean check(int x, int y, int z) {
        int[] a = {x / 100, y / 100, z / 100};
        int[] b = {(x / 10) % 10, (y / 10) % 10, (z / 10) % 10};
        int[] c = {x % 10, y % 10, z % 10};
        Set<Integer> set = new HashSet<>();
        boolean flag = true;
        for (int i = 0; i < 3; i++) {
            if (a[i] == 0) {
                return false;
            }
            flag = set.add(a[i]);
            if (!flag) {
                return false;
            }
        }
        for (int i = 0; i < 3; i++) {
            if (b[i] == 0) {
                return false;
            }
            flag = set.add(b[i]);
            if (!flag) {
                return false;
            }
        }
        for (int i = 0; i < 3; i++) {
            if (c[i] == 0) {
                return false;
            }
            flag = set.add(c[i]);
            if (!flag) {
                return false;
            }
        }
        return true;
    }
}
